package com.jinken.service.impl;

import com.jinken.service.IPaymentService;
import org.apache.dubbo.config.annotation.DubboService;

/**
 * @DubboService 注解用来标记一个类或者接口作为Dubbo的服务提供者，并将发布为Dubbo服务
 * 1，标记服务提供者，类上或者接口上
 * 2，自动暴露服务：在引用启动的时候dubbo自动处理服务发布过程（协议选择，端口绑定，注册中心注册等）
 * 3，透明的远程调用：调用者无序关心远程调用细节
 * 4，提供配置选项（超时选项，最大并发数，负载均衡）
 */

/**
 * @DubboService常用属性
 *  timeout 配置服务访问超时时间
 *  version 服务版本
 *  loadbalance 配置负载均衡策略
 *      ● random：随机负载均衡
     * ● leastactive：最少活跃调用数，相同活跃数的随机
     * ● roundrobin：轮询负载均衡
     * ● consistenthash：一致性哈希负载均衡
 *
 */
@DubboService(loadbalance = "roundrobin")
public class PaymentServiceImpl implements IPaymentService {
    @Override
    public String payment(Integer orderId) {

        try {
            //模拟处理业务要3秒钟
            Thread.sleep(3000);
            System.out.println("============终于执行完了===========");
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }

        return "payment success A";
    }





}
